1.除2倒取余法
根据二进制的计算方法,输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2…依次循环,直到商为0结束。把余数倒着输出,就得到了转换后的二进制数。
可以用int来存储最后的二进制数,每次求余后把余数存储在int型数的低位,依次递增。
1 | 1 public void Decimal2binary(int n){ |
但是int只能表示2^31-1 的正数,存储的二进制数位数有限;所以可以使用字符串的拼接(+)来实现,代码如下:
1 | 1 public void Decimal2binary(int n){ |
2. 移位实现
利用移位操作对一个十进制数进行移位操作,将最高位的数移至最低位(移31位),使用按位 & 操作,可以使用和1相与(&),然后把这个数按十进制输出;再移次高位,做相同的操作,直到最后一位 ,代码如下。
1 | 1 public void Decimal2binary(int n){ |
说明:由于计算机中存储的都是数的补码,正数的原码、反码、补码都是相同的;而负数的原码、反码、补码是不一样的,补码=原码取反+1(符号位不变)。所以,负数是按照它的补码输出的。
>>>为逻辑移位符,向右移n位,高位补0
>> 算数移位符,也是向右移n位,不同的是:正数高位补0,负数高位补1
3.调用API函数
通过Integer.toBinaryString()方法实现。
1 | public void function1(int n){ |